Component org.nuxeo.runtime.datasource
In bundle org.nuxeo.runtime.datasource
Documentation
Component use to register datasources.
Implementation
Class:
org.nuxeo.runtime.datasource.DataSourceComponent
Services
Extension Points
Contributions
XML Source
<?xml version="1.0"?>
<component name="org.nuxeo.runtime.datasource">
<documentation>
Component use to register datasources.
</documentation>
<require>org.nuxeo.runtime.jtajca.JtaActivator</require>
<service>
<provide interface="org.nuxeo.runtime.datasource.PooledDataSourceRegistry" />
</service>
<implementation class="org.nuxeo.runtime.datasource.DataSourceComponent" />
<extension-point name="datasources">
<documentation>
Example contribution:
<code>
<datasource name="jdbc/foo"
driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
maxPoolSize="20" minPoolSize="5" blockingTimeoutMillis="10000">
<property name="url">jdbc:derby:/home/db;create=true
</property>
<property name="username">nuxeo</property>
<property name="password">********</property>
</datasource>
</code>
Or, for a XA datasource:
<code>
<datasource name="jdbc/foo"
xaDataSource="org.apache.derby.jdbc.EmbeddedXADataSource"
maxPoolSize="20" minPoolSize="5" blockingTimeoutMillis="10000">
<property name="databaseName">/home/db</property>
<property name="createDatabase">create</property>
<property name="user">nuxeo</property>
<property name="password">********</property>
</datasource>
</code>
The allowed attributes of a
<b>datasource</b>
element are:
<ul>
<li>
<b>name</b>
the JNDI name (for instance
<tt>jdbc/foo</tt>
)
</li>
<li>
<b>driverClassName</b>
the JDBC driver class name (only for a non-XA datasource)
</li>
<li>
<b>xaDataSource</b>
the XA datasource class name (only for a XA datasource)
</li>
</ul>
<p />
To configure the characteristics of the pool:
<ul>
<li>
<b>maxPoolSize</b>
the maximum number of active connections
</li>
<li>
<b>minPoolSize</b>
the minimum number of idle connections
</li>
<li>
<b>blockingTimeoutMillis</b>
the maximum number of milliseconds to wait for a connection to
be
available, or -1 (the default) to wait indefinitely
</li>
<li>
... see org.apache.commons.dbcp.BasicDataSource setters for
more.
</li>
</ul>
<p />
To configure the datasource, individual property sub-elements must
be
used.
For a non-XA datasource,
<b>url</b>
,
<b>username</b>
and
<b>password</b>
are commonly used. For a XA datasource, the properties are done
according
to the JavaBean setters of the datasource, see the
documentation for
your
JDBC driver for more.
</documentation>
<object class="org.nuxeo.runtime.datasource.DataSourceDescriptor" />
<object class="org.nuxeo.runtime.datasource.DataSourceLinkDescriptor" />
</extension-point>
<extension-point name="sorter">
<documentation>
<sorter id="h2" path="org.h2" override="false">
<code>ConnectionException</code>
<code>RemoteDatabaseAccess</code>
<code>08001</code>
</sorter>
<p>SQL Exceptions thrown are checked by the datasource for stating if the connnection should be
evicted from the pool. The datasource exception sorter enable you to contribute fatal sqlcodes for
a defined database. Each sorter contribution are identified uniquely by it's <emph>id</emph>.
You could override or extend a sorted configuration using the <emph>override</emph> attribute. Once a exception is
thrown a sorter configuration is selected by comparing the exception stack trace packages with the <emph>path</emph> package attribute.
If a package in the stack trace is starting by the <emph>path</emph>, this sorter configuration is selected. If no sorter configuration
is matching the strack trace, the sorter configuration identified by the empty string is selected.</p>
<p>The contributed SQL codes could be a classcode or a complete sqlcode. For easier configuration, you could use the enumeration labels defined
for the standard SQL in <emph>org.nuxeo.runtime.datasource.DatasourceExceptionSorter.Classcode</emph>.</p>
</documentation>
<object class="org.nuxeo.runtime.datasource.DatasourceExceptionSorter$Configuration" />
</extension-point>
<extension target="org.nuxeo.runtime.datasource" point="sorter">
<sorter>
<code>ConnectionException</code>
<code>RemoteDatabaseAccess</code>
<code>SystemError</code>
</sorter>
</extension>
</component>